基于接口而非实现编程是一种非常高效且提高代码质量的手段。
接口的含义
- 抽象层面的接口
- 服务端与客户端之间的“接口”
- 类库提供的“接口”
- 通信协议接口
- 代码接口
- 编程语言中的接口类或者抽象类
接口的意义
“面向接口而非实现编程”也可以表述为”基于抽象而非实现编程”,抽象是提高代码扩展性、灵活性、可维护性的最优先手段之一。
- 将接口与实现相分离,封装不稳定的实现,暴露稳定的接口。
- 抽象、顶层、脱离具体实现的设计可以提高代码的灵活性,应对未来复杂的需求变化。
基于接口而非实现编程的要求
- 函数命名不能暴露任何实现细节,适配未来的需求变化,应该取一个较为宽泛且概括中心概念的名字。
- 封装具体实现细节
- 为实现类定义抽象的接口。使用者依赖接口,而非具体的实现类编程。
接口实现的度
任何事情都要讲一个度,对于基于接口而非实现编程的‘度’应该如何把握呢?哪些可以直接使用实现类进行编程?
- 业务场景中,某个功能只有一种实现方式,我来也不可能会被其他方式替代,就没必要设计接口,直接使用实现类
- 系统特别稳定,基本不做维护,就没必要在扩展性投入不必要的开发时间。